Virtualization allows multiplexing of the underlying host machine between different virtual machines. The host computer allocates a certain amount of its resources to each of the virtual machines. Each virtual machine is then able to use the allocated resources to execute applications, including operating systems (referred to as guest operating systems). The software layer providing the virtualization is commonly referred to as a hypervisor and is also known as a virtual machine monitor (VMM), a kernel-based hypervisor or a host operating system. The hypervisor emulates the underlying hardware of the host computer, making the use of the virtual machine transparent to the guest operating system and the user of the virtual machine.
A host controller in the virtualization system may include a virtualization manager to manage the allocation of resources from host servers to virtual machines, monitor the status of the virtual machines, as well as the progress of commands and processes being executed by the virtual machines and generally manage operations in the system. The host controller may maintain a management database with entries pertaining to the various entities in the virtualization system (e.g., host computers, virtual machines, virtual disks). Each entry may include data representing the status of the corresponding entity. The database may be organized according to a particular schema. The schema defines the structure of the database and controls the organization of the data.
Over time, as new features are added to the virtualization system, the management database is upgraded to reflect changes caused by the new features. Typically a series of one or more upgrade scripts may be run on the database to update the schema or data contained in the database. In conventional systems, the upgrades scripts are run according to an upgrade script number which uniquely identifies the script. If for some reason, the upgrade process of the virtualization manager attempts to run the scripts out of numerical order (e.g., to install one feature before another), certain scripts may be inadvertently skipped because they have a lower upgrade script number. Certain scripts may have lower upgrade script numbers because they were developed prior to other scripts, although they may be introduced (i.e., installed) later. This may cause the management database to not reflect all of the desired features.